package com.jackstraw.jack_base.datasource.jpa.base.entity.po;

import com.jackstraw.jack_base.datasource.database.parten.base.entity.po.BasePo;
import com.jackstraw.jack_base.util.function.ReflectionUtil;

/**
 * JPA实体类
 *
 * @param <PO>
 */
public abstract class JpaPo<PO extends JpaPo<PO, ID>, ID> extends BasePo<PO> {


    /**
     * 主键字段名称
     *
     * @return
     */
    protected abstract String idFieldName();

    /**
     * 获取主键的值
     */
    public ID keyValue() {
        return (ID) ReflectionUtil.getValue(idFieldName(), this);
    }

}
